package com.isky.visual.proj.service;

import com.isky.visual.common.BasePageResult;
import com.isky.visual.proj.entity.Project;
import com.baomidou.mybatisplus.extension.service.IService;
import com.isky.visual.proj.entity.vo.ProjectMoveParam;
import com.isky.visual.proj.entity.vo.ProjectPageParam;
import com.isky.visual.proj.entity.vo.ProjectShareParam;
import com.isky.visual.proj.entity.vo.ProjectVisualVO;
import java.util.List;

/**
 * <p>
 * 发布可视化项目 服务类
 * </p>
 *
 * @author wudl
 * @since 2020-04-28
 */
public interface IProjectService extends IService<Project> {


    /**
     * TODO 复制项目
     * @param groupId
     * @param projectId
     * @return
     */
    public boolean copy(Long groupId, Long projectId);

    /**
     * TODO 删除
     * @param projectId
     * @return
     */
    public boolean delete (Long projectId);

    /**
     * TODO 获取我的仪表盘列表
     * @param param
     * @return
     */
    public List<Project> getProjectListPage(ProjectPageParam param);

    /**
     * TODO 获取公共仪表盘列表
     * @param param
     * @return
     */
    public List<Project> queryShareProjectList(ProjectPageParam param);
    /**
     * TODO 发布
     * @param projectId
     * @return
     */
    public boolean publish (Long projectId);

    /**
     * 通过id获取project
     * @param projectId
     * @return
     */
    Project selectProjectById(Long projectId);

    boolean insertProject(Long groupId,Project project);

    /**
     * 移动
     * @param moveParam
     * @return
     */
    boolean move(ProjectMoveParam moveParam);

    /**
     * 重命名
     * @param id
     * @param projectName
     * @return
     */
    boolean rename(Long id ,String projectName);

    /**
     * 更新选择的字段
     * @param project
     * @return
     */
    boolean updateSelect(Project project);

    /**
     * 分享，分享到用户组和用户
     * @param projectShareParam
     * @return
     */
    boolean share(ProjectShareParam projectShareParam);

    /**
     * 通过用户组id查询页面信息
     * @param id
     * @return
     */
    List<String> queryByUserGroupId(Long id);

    /**
     * 通过用户id查询页面信息
     * @param id
     * @return
     */
    List<String> queryByUserId(Long id);
}
